﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BO;

namespace WebMotel
{
    public partial class frmCozinha : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!Page.IsPostBack)
                {
                    pesquisar();
                    PedidoStatusBO.Listar(ddlStatusPedido_Status);
                }
            }
            catch (Exception ex)
            {
                showMensagem("erro", ex.Message);
            }
        }
        #region Objetos

        public class temp
        {
            public int ID { get; set; }
            public string Descricao { get; set; }
            public string Qtd { get; set; }
            public string hr { get; set; }
            public string obs { get; set; }
            public string status { get; set; }
            public string cor { get; set; }
        }
        #endregion

        #region Funções
        public int PaginaAtual //Propriedade da página atual, colocada no viewstate
        {
            get
            {
                object o = this.ViewState["PaginaAtual"];
                if (o == null || (int)o < 0)
                {
                    return 0;
                }
                else
                {
                    return (int)o;
                }
            }
            set
            {
                this.ViewState["PaginaAtual"] = value;
            }
        }
        protected void lnkProximo_Click(object sender, EventArgs e)
        {
            PaginaAtual++;
            pesquisar();
        }

        protected void lnkAnterior_Click(object sender, EventArgs e)
        {
            PaginaAtual--;
            pesquisar();
        }
        public void showMensagem(string tipo, string mensagem)
        {
            divMensagem.Attributes["class"] = "mensagem " + tipo;
            pMensagem.InnerText = mensagem;
        }
        public void pesquisar()
        {
            divMensagem.Attributes["class"] = "mensagem ";

            try
            {
                int id = 0;
                //if (!string.IsNullOrEmpty(txtPesquisar_ID.Text.Trim()))
                //    id = int.Parse(txtPesquisar_ID.Text);


                var objs1 = PedidoBO.Listar(0, 0);


                objs1 = (from a in objs1 where a.Comanda.dtHoraSaida == null select a).ToList();
                objs1 = (from a in objs1 where a.Produto.vaiParaCozinha == "S" select a).ToList();
                objs1 = (from a in objs1 where a.PedidoStatu.descricao != "Consumido" select a).ToList();


                List<temp> objs = new List<temp>();

                foreach (var item in objs1)
                {
                    temp obj = new temp();
                    obj.ID = item.id;
                    obj.hr = item.horaPedido.ToString();
                    obj.obs = item.observacoes;
                    obj.Qtd = item.quantidade.ToString();
                    obj.status = item.PedidoStatu.descricao;
                    obj.Descricao = item.Produto.descricao;

                    if (obj.status == "Aguardando Cozinheiro")
                        obj.cor = "btn btn-mini btn-danger";

                    else if (obj.status == "Cozinhando")
                        obj.cor = "btn btn-mini btn-warning";

                    else if (obj.status == "Pronto")
                        obj.cor = "btn btn-mini btn-success";

                    objs.Add(obj);
                }
            

                PagedDataSource Pgs = new PagedDataSource();
                Pgs.AllowPaging = true; //Seta paginação no PagedDataSource
                Pgs.DataSource = objs; // No caso, está setando como datasource o um objeto mas pode ser por exemplo, um DataSet.
                Pgs.PageSize = 30; //Número de registros por página

                int cont = Pgs.PageCount;

                if (PaginaAtual >= Pgs.PageCount)
                {
                    PaginaAtual--;
                }
                else if (PaginaAtual < 0)
                {
                    PaginaAtual++;
                }

                Pgs.CurrentPageIndex = PaginaAtual;
                rptListagem.DataSource = Pgs;
                rptListagem.DataBind();

                PaginaAtual++;
            }
            catch (Exception)
            {

                throw;
            }
        }
        #endregion

        #region Botoes


        protected void btnIcon_AlterarStatus_OnClick(object sender, EventArgs e)
        {
            divMensagem.Attributes["class"] = "mensagem ";

            try
            {
                LinkButton lkb = (LinkButton)sender;
                int id = int.Parse(lkb.CommandArgument);

                Pedido obj = PedidoBO.Selecionar(id);

                lblStatusPedido_PedidoDescricao.Text = obj.Produto.descricao;

                lblStatusPedido_PedidoID.Text = id.ToString();

                if (obj.PedidoStatu.descricao == "Aguardando Cozinheiro")
                    ddlStatusPedido_Status.SelectedValue = ddlStatusPedido_Status.Items.FindByText("Cozinhando").Value;

                else if (obj.PedidoStatu.descricao == "Cozinhando")
                    ddlStatusPedido_Status.SelectedValue = ddlStatusPedido_Status.Items.FindByText("Pronto").Value;

                else if (obj.PedidoStatu.descricao == "Pronto")
                    ddlStatusPedido_Status.SelectedValue = ddlStatusPedido_Status.Items.FindByText("Consumido").Value;

                ddlStatusPedido_Status.DataBind();

            }
            catch (Exception ex)
            {
                throw;
            }
        }

        protected void btnAlterarStatus_Salvar_OnClick(object sender, EventArgs e)
        {
            divMensagem.Attributes["class"] = "mensagem ";
            try
            {
                int pedidoID = int.Parse(lblStatusPedido_PedidoID.Text);

                Pedido pedi = PedidoBO.Selecionar(pedidoID);

                pedi.pedidoStatusID = int.Parse(ddlStatusPedido_Status.SelectedValue);

                PedidoBO.Salvar(pedi, 0);

                pesquisar();

                showMensagem("sucesso", "Registro salvo com sucesso!");
            }
            catch (Exception ex)
            {
                showMensagem("erro", ex.Message);
            }
        }
        #endregion
    }
}
